"""
File: conftest.py
Author: ershixiong
Date: 2023/12/25
describe:

"""

from typing import List


global_env = {}
option_added = False
items_set = False


def pytest_addoption(parser):
    global option_added
    my_group = parser.getgroup('my_hog')

    # 注册命令行参数
    # 因为测试用例子目录下有多个conftest.py文件，使用了 from ..conftest import *
    # 导致根目录下面的 conftest.py 的 pytest_addoption重复执行，会报错 命令行参数已添加
    # todo 重复添加的原因暂未发现
    # 暂时通过 禁止重复添加来实现
    if not option_added:
        my_group.addoption(
            '--env',
            default='test',
            dest='env',
            help='设置接口自动化测试环境'
        )
        option_added = True


def pytest_configure(config):
    if not global_env:
        default_env = config.getoption('--env')
        temp = {'env': default_env}
        global_env.update(temp)


def pytest_collection_modifyitems(
        session: "Session", config: "Config", items: List["Item"]
) -> None:
    global items_set
    # 重复设置会导致不生效，
    if not items_set:
        for item in items:
            item.name = item.name.encode('utf-8').decode('unicode-escape')
            item._nodeid = item.nodeid.encode('utf-8').decode('unicode-escape')
        items_set = True